|
Лабораторная работа № 9 Компонент RichEdit |
|
Компонент RichEdit представляет собой многофункциональное средство редактирования текстов, позволяющее работать с обогащенным форматом .rtf, т.е. выбирать различные атрибуты форматирования для разных фрагментов текста. В этом основное отличие TRichEdit от более простого компонента Memo, в котором атрибуты форматирования одинаковы для всего текста. Окно редактирования снабжено многими функциями, свойственными большинству редакторов. Например, в нем предусмотрены типичные комбинации "горячих" клавиш: Ctrl-C - копирование выделенного текста в буфер обмена Clipboard (команда Copy), Ctrl-X - вырезание выделенного текста в буфер Clipboard (команда Cut), Ctrl-V - вставка текста из буфера Clipboard в позицию курсора (команда Paste), Ctrl-Z - отмена последней команды редактирования. Свойство Lines, доступное как во время проектирования, так и во время выполнения, имеет множество свойств и методов типа TStrings, которые обычно используются для формирования и редактирования текста. Весь текст содержится в свойстве Text. При желании изменить атрибуты вновь вводимого фрагмента текста вы можете задать свойство SelAttributes. Это свойство типа TTextAttributes, которое в свою очередь имеет подсвойства: Color (цвет), Name (имя шрифта), Size (размер), Style (стиль) и ряд других. Например, если приложение имеет компонент RichEdit и диалог выбора шрифта FontDialog типа TFontDialog, то следующий код позволит пользователю менять атрибуты вновь вводимого или выделенного текста: if FontDialog1.Execute then with RichEdit1.SelAttributes do begin Color:=FontDialog1.Font.Color; Name:=FontDialog1.Font.Name; Size:=FontDialog1.Font.Size; Style:=FontDialog1.Font.Style; end; RichEdit1.SetFocus; В приведенном коде присваивается поочередно значение каждого свойства. Но этот текст можно кардинально сократить, воспользовавшись тем, что объекты SelAttributes и Font совместимы по типу. Поэтому можно присвоить сразу все свойства одного объекта другому: if FontDialog1.Execute then RichEdit1.SelAttributes.Assign(FontDialog1.Font); RichEdit1.SetFocus; В компоненте имеется также свойство DefAttributes, содержащее атрибуты по умолчанию. Эти атрибуты действуют до того момента, когда изменяются атрибуты в свойстве SelAttributes. Но значения атрибутов в DefAttributes сохраняются и в любой момент эти значения могут быть методом Assign присвоены атрибутам свойства SelAttributes, чтобы вернуться к прежнему стилю. За выравнивание, отступы и т.д. в пределах текущего абзаца отвечает свойство Paragraph типа TParaAttributes. Этот тип в свою очередь имеет ряд свойств: Alignment Определяет выравнивание текста FirstIndent Число пикселей отступа красной строки Numbering Управляет вставкой маркеров, как в списках LeftIndent Отступ в пикселях от левого поля RightIndent Отступ в пикселях от правого поля TabCount Количество позиций табуляции Tab Значения позиций табуляции в пикселях Значения подсвойств свойства Paragraph можно задавать только в процессе выполнения приложения, например, в событии создания формы или при нажатии какой-нибудь кнопки. Значения подсвойств свойства Paragraph относятся к тому абзацу, в котором находится курсор. Например, каждый из следующих операторов осуществит соответственное выравнивание текущего абзаца: RichEdit1.Paragraph.Alignment:=taLeftJustify; // Влево RichEdit1.Paragraph.Alignment:=taCenter; // По центру RichEdit1.Paragraph.Alignment:=taRightJustify; // Вправо Следующий оператор приведет к тому, что текущий абзац будет отображаться как список, т.е. с маркерами: RichEdit1.Paragraph.Numbering:=nsBullet; Уничтожение списка в текущем абзаце осуществляется оператором RichEdit1.Paragraph.Numbering:=nsNone;
|
